<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>

    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    
    <script type="text/babel">
        class Weather extends React.Component {
            constructor(props) {
                super(props) 
                // 初始化状态
                this.state = {isHot:true}
                // 解决changeWeather中的this指向问题
                this.change = this.changeWeather.bind(this)
            }
            render() {
                // 读取状态
                const {isHot} = this.state 
                // 这里的this指向原型对象
                // return <h1 onClick={this.changeWeather}>今天天气{isHot?'凉爽':'炎热'}</h1>

                // 这里的this指向实例自身
                return <h1 onClick={this.change}>今天天气{isHot ? '1' :'2' }</h1>
            }
            changeWeather() {
                // changeWeather放在实例对象的原型上，供实例使用
                // changeWeather作为onClick的回调函数使用，不是通过实例调用，是直接调用
                // 类中的方法默认开启了严格模式，this指向丢失

                // 状态不可直接更改，必须借助React内置API
                // this.state.isHot = !this.state.isHot
                this.setState({isHot:!this.state.isHot})
            }
        }

        function demo() {
            // 修改状态
        }
        ReactDOM.render(<Weather/>,document.querySelector('#app'))
    </script>
</body>
</html>
